Current input/output (I/O) technology for computer systems provide for a single I/O device driver program controlling an I/O device, with that I/O device driver executing as a component of operating system (OS) software solely within the OS environment on a host system. Such a single or monolithic I/O device driver is provided on the host computer to allow access to the local I/O device or controller. Such a conventional arrangement is not very flexible.
Moreover, such an arrangement requires an inefficient communications process to allow one host to communicate with an I/O device on another host. The OS directly controls I/O operations between the I/O device and its physical memory. If another host wants access to the I/O device, it must request service from the OS on the host system owning the I/O device. In a simple single I/O unit or single host system operating environments this is sufficient, but in clustered environments several data movements or messages may be required to complete a requested data transfer.
Several communications models are presently used for either a distributed environment or in single host systems. In Pull-Pull models, entities request data from other entities and provide a known location for that data to be placed in. Examples of network applications that use the pull/pull model include FTP (File Transfer Protocol and HTTP (Hypertext Transfer Protocol). The disadvantages of this model include heavy data transfer latency, and the inability for entities to know when data has been updated. These limitations (and others) have led to a lack of Pull-Pull models in system architectures.
In Push-Pull Models, one entity (typically the faster entity) will push data to and pull data from the target entity (typically a slower entity). Advantages of this approach include the ability to use combinations of faster (server) and slower (I/O devices) entities to perform efficient data transfer. A disadvantage is the heavy latency incurred between the request for data and the receipt of that data. Push-Pull models are also used in networking applications such as IP-multicasting and webcasting. Traditional Shared Memory Architectures (e.g., Peripheral Component Interconnect or PCI in a single host environment) favor a Push-Pull model for most of data transfers.
While the current models are designed for the existing shared memory systems, to take advantage of the channel based systems where the host and IO unit are distributed, there is a need for improved techniques to perform communication between computers or nodes in a clustered environment.